﻿using System;
using System.Collections.Generic;
using ContractManager.BLL.Business;
using ContractManager.Common.Class;
using ContractManager.Common.FormBase;
using ContractManager.Entity;

using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace ContractManager.Lists.Forms
{
    public partial class FrmCapitalDetail : XtraFormBase
    {
        #region "Private Variable"
        
        public bool SaveClose;
        public bool SaveNew;
        public bool OnlyView;
        public int MasterId;

        public List<Capitals> List = new List<Capitals>(); 
        #endregion

        #region "Form Construction"
        public FrmCapitalDetail()
        {
            InitializeComponent();
        }
        #endregion

        #region "Private Method"

        private void BlankForm()
        {
            /*txtCode.EditValue = null;
            txtName.EditValue = null;
            txtDescription.EditValue = null;*/

            this.ResetControls();
            //txtCode.Properties.ReadOnly = MasterId > 0;
        }

        private void GetDetail()
        {
            var detail = ClsCapitals.SelectByPk(MasterId);
            if (detail != null)
            {
                txtCode.EditValue = String.Format("{0}",detail.CapCode);
                txtName.EditValue = String.Format("{0}", detail.CapName);
                txtDescription.EditValue = String.Format("{0}", detail.CapDescription);
                
            }   
        }

        private void DoSave()
        {
            #region "Check Condition"
            //if (!FormIsNotValidate)
            //{
            //    if (!dxValidationProvider.Validate())
            //    {
            //        XtraMessageBox.Show(
            //                    "Vui lòng nhập đầy đủ thông tin trước khi lưu",
            //                    "Thông báo",
            //                    MessageBoxButtons.OK,
            //                    MessageBoxIcon.Error);
            //        txtCode.SelectAll();
            //        txtCode.Focus();
            //        return;
            //    }
            //}
            #endregion

            Capitals item = MasterId <= 0 ? new Capitals() : ClsCapitals.SelectByPk(MasterId);
            item.CapId = MasterId;
            item.CapCode = String.Format("{0}", txtCode.EditValue);
            item.CapName = String.Format("{0}", txtName.EditValue);
            item.CapDescription = String.Format("{0}", txtDescription.EditValue);
            try
            {
                if (MasterId > 0)
                {
                    ClsCapitals.Update(item); 
                }
                else
                {
                    var citem = ClsCapitals.SelectByCode(item.CapCode);
                    if (citem != null)
                    {
                        XtraMessageBox.Show(
                            "Mã nguồn vốn không được phép trùng.",
                            "Thông báo",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                        return;
                    }
                    ClsCapitals.Insert(item);
                    MasterId = item.CapId;
                    List.Add(item);
                }
                
                if (SaveNew)
                {
                    MasterId = 0;
                    BlankForm();
                    txtCode.Focus();
                }
                else if (SaveClose)
                {
                    Close();
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(
                    String.Format("Có lỗi xảy ra trong quá trình cập nhật dữ liệu. {0}", ex.Message),
                    "Thông báo",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }
        }

        private void DoDelete()
        {
            if (MasterId <= 0) return;
            
            try
            {
                if (
                        XtraMessageBox.Show(
                                        "Bạn có muốn xóa bản ghi này không?",
                                        "Thông báo",
                                        MessageBoxButtons.YesNo,
                                        MessageBoxIcon.Question) == DialogResult.No) return;
                ClsCapitals.DeleteByPk(MasterId);
                Close();
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(
                       "Có lỗi xảy ra trong quá trình xóa dữ liệu. " + ex.Message,
                       "Thông báo",
                       MessageBoxButtons.OK,
                       MessageBoxIcon.Error);
            }
        }

        #endregion

        #region "Form Event"
        private void FrmCapitalDetailLoad(object sender, EventArgs e)
        {
            BlankForm();
            if (!String.IsNullOrEmpty(FormXtraLayoutTemplate))
            {
                var fileLayout = ClsVariable.GetRestoreLayoutFullPath(FormXtraLayoutTemplate);
                layoutControl.RestoreLayoutFromXml(fileLayout);
            }
            if (MasterId > 0) GetDetail();
            btnSaveNew.Enabled = !OnlyView;
            btnSave.Enabled = !OnlyView;
            btnSaveClose.Enabled = !OnlyView;
            btnDelete.Enabled = !OnlyView;
            btnDesign.Enabled = !OnlyView;
           
        }
        #endregion

        #region "Toolbar Event"
        private void TbMenuItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            switch (e.Item.Name)
            {
                case "btnSave":
                    DoSave();
                    break;
                case "btnSaveNew"://Lưu và thêm mới
                    SaveNew = true;
                    SaveClose = false;
                    DoSave();
                    break;
                case "btnSaveClose"://Lưu và đóng
                    SaveClose = true;
                    SaveNew = false;
                    DoSave();
                    break;
                case "btnDelete":
                    DoDelete();
                    break;
                case "btnDesign":
                    break;
                case "btnRefresh"://Nạp lại danh mục
                    break;
                case "btnHistory"://History
                    break;
                case "btnClose":
                    Close();
                    break;
            }
        }
        #endregion
    }
}
